home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 August: Tool Chest / Dev.CD Aug 94.toast / New System Software Extensions / OpenDoc A6 / SOM / OpenDoc and SOM / CPlusPlus / ODObject.xh < prev    next >
Encoding:
Text File  |  1994-04-19  |  7.4 KB  |  347 lines  |  [TEXT/MPS ]

  1.  
  2. /*
  3.  * This file was generated by the SOM Compiler.
  4.  * FileName: Locrian:WWDCSun:CPlusPlus:ODObject.xh.
  5.  * Generated using:
  6.  *     SOM Precompiler somipc: somc/smemit.c
  7.  *     SOM Emitter emitxh.dll: somc/smmain.c
  8.  */
  9.  
  10. /*
  11.  * 
  12.  *  Theory of Operation
  13.  * 
  14.  * 
  15.  *  Classes defined in this interface
  16.  * 
  17.  */
  18.  
  19.  
  20. #ifndef SOM_ODObject_xh
  21. #define SOM_ODObject_xh
  22.  
  23. class ODObject;
  24.  
  25. #define ODObject_MajorVersion 0
  26. #define ODObject_MinorVersion 0
  27.  
  28. /*
  29.  * Passthru lines: File: "C.xh", "before"
  30.  */
  31.  
  32.  
  33. #include <ODTypes.xh>;
  34. #include <ODTypesM.h>;
  35.  
  36.  
  37. /* C++ som defs */
  38. #include <somcls.xh>
  39.  
  40. /* Include C++ parent defs */
  41. #ifndef SOM_SOMObject_xh
  42. #include <somobj.xh>
  43. #endif
  44.  
  45. #ifndef ODObject_API
  46. #define ODObject_API
  47. /*
  48.  * -- The Class API
  49.  */
  50.  
  51. /*
  52.  * Start of user-defined types:
  53.  */
  54. class ODExtension;
  55.  
  56. /*
  57.  * End of user-defined types.
  58.  */
  59.  
  60. #if applec ^ PRAGMA_LIB_EXPORT
  61. #pragma lib_export on
  62. #endif
  63.  
  64.  
  65. /* A procedure to create the ODObject Class */
  66. class M_ODObject;
  67. SOMEXTERN M_ODObject * SOMLINK ODObjectNewClass(
  68.         integer4 majorVersion,
  69.         integer4 minorVersion);
  70.  
  71. /* The API to the ODObject class object, and the methods it introduces. */
  72. typedef struct ODObjectClassDataStructure {
  73.     M_ODObject *classObject;
  74.     somMToken InitObject;
  75.     somMToken IsInitialized;
  76.     somMToken HasExtension;
  77.     somMToken GetExtension;
  78.     somMToken ReleaseExtension;
  79.     somMToken Purge;
  80.     somMToken SubClassResponsibility;
  81. } ODObjectClassDataStructure;
  82. #ifdef SOM_NO_DATA_EXPORTS
  83.    SOMEXTERN ODObjectClassDataStructure * ODObjectGetClassData ( void );
  84. #   undef ODObjectClassData
  85. #   define ODObjectClassData (*ODObjectGetClassData())
  86. #else
  87.    SOMEXTERN ODObjectClassDataStructure ODObjectClassData;
  88. #endif /* SOM_NO_DATA_EXPORTS */
  89.  
  90. #if applec ^ PRAGMA_LIB_EXPORT
  91. #pragma lib_export off
  92. #endif
  93.  
  94. #define _ODObject ODObjectClassData.classObject
  95.  
  96. /* The API to parentMtabs for ODObject, and the instance data it introduces. */
  97. SOMEXTERN struct ODObjectCClassDataStructure {
  98.     somMethodTabs parentMtab;
  99.     somDToken instanceDataToken;
  100. } ODObjectCClassData;
  101.  
  102. /*
  103.  * -- Typedefs for Procedures that support Methods introduced by ODObject
  104.  */
  105. SOMEXTERN {
  106. typedef void   (* SOMLINK somTD_ODObject_InitObject)(ODObject *somSelf, Environment *ev);
  107. typedef boolean   (* SOMLINK somTD_ODObject_IsInitialized)(ODObject *somSelf, Environment *ev);
  108. typedef boolean   (* SOMLINK somTD_ODObject_HasExtension)(ODObject *somSelf, Environment *ev,
  109.         ODType extensionName);
  110. typedef ODExtension*   (* SOMLINK somTD_ODObject_GetExtension)(ODObject *somSelf, Environment *ev,
  111.         ODType extensionName);
  112. typedef void   (* SOMLINK somTD_ODObject_ReleaseExtension)(ODObject *somSelf, Environment *ev,
  113.         ODExtension* extension);
  114. typedef ODSize   (* SOMLINK somTD_ODObject_Purge)(ODObject *somSelf, Environment *ev,
  115.         ODSize size);
  116. typedef void   (* SOMLINK somTD_ODObject_SubClassResponsibility)(ODObject *somSelf, Environment *ev);
  117. }
  118.  
  119. #endif /* ODObject_API */
  120.  
  121.  
  122. /*
  123.  * -- Method Tokens are Thunks
  124.  */
  125. #undef somresolve_
  126. #define somresolve_(obj,mToken) ((somMethodProc*)((void)obj, mToken))
  127.  
  128. /*
  129.  * -- The C++ Wrapper Class for ODObject
  130.  */
  131. class ODObject : public SOMObject
  132. {
  133. public:
  134.  
  135. void *operator new(size_t size)
  136. {
  137.    SOM_IgnoreWarning(size);
  138.    if (!ODObjectClassData.classObject) 
  139.       ODObjectNewClass(ODObject_MajorVersion,ODObject_MinorVersion);
  140.    return (void *)
  141.       ((somTD_SOMClass_somNew)
  142.       somresolve_((SOMObject *)((void*)(ODObjectClassData.classObject)),
  143.                  SOMClassClassData.somNew))
  144.          ((SOMClass *)((void*)(ODObjectClassData.classObject)));
  145. }
  146.  
  147. void operator delete(void * obj)
  148. {
  149.    ((SOMObject *)obj)->somFree();
  150. }
  151.  
  152. /* Override somGetClass for this class to specialize the return type. */
  153. M_ODObject* somGetClass()
  154. {
  155.    return (M_ODObject *) ((void *)(SOMObject::somGetClass()));
  156. }
  157.  
  158. /* public method: InitObject */
  159. void   InitObject(Environment *ev)
  160. {
  161.    SOM_Resolve(this,ODObject,InitObject)
  162.     (this,ev);
  163. }
  164.  
  165.  
  166. /* public method: IsInitialized */
  167. boolean   IsInitialized(Environment *ev)
  168. {
  169.    return SOM_Resolve(this,ODObject,IsInitialized)
  170.     (this,ev);
  171. }
  172.  
  173.  
  174. /* public method: HasExtension */
  175. boolean   HasExtension(Environment *ev,
  176.         ODType extensionName)
  177. {
  178.    return SOM_Resolve(this,ODObject,HasExtension)
  179.     (this,ev,extensionName);
  180. }
  181.  
  182.  
  183. /* public method: GetExtension */
  184. ODExtension*   GetExtension(Environment *ev,
  185.         ODType extensionName)
  186. {
  187.    return SOM_Resolve(this,ODObject,GetExtension)
  188.     (this,ev,extensionName);
  189. }
  190.  
  191.  
  192. /* public method: ReleaseExtension */
  193. void   ReleaseExtension(Environment *ev,
  194.         ODExtension* extension)
  195. {
  196.    SOM_Resolve(this,ODObject,ReleaseExtension)
  197.     (this,ev,extension);
  198. }
  199.  
  200.  
  201. /* public method: Purge */
  202. ODSize   Purge(Environment *ev,
  203.         ODSize size)
  204. {
  205.    return SOM_Resolve(this,ODObject,Purge)
  206.     (this,ev,size);
  207. }
  208.  
  209.  
  210. /* public method: SubClassResponsibility */
  211. void   SubClassResponsibility(Environment *ev)
  212. {
  213.    SOM_Resolve(this,ODObject,SubClassResponsibility)
  214.     (this,ev);
  215. }
  216.  
  217.  
  218.  
  219. };   /* ODObject */
  220.  
  221.  
  222.  
  223. #endif       /* SOM_ODObject_xh */
  224.  
  225. #ifndef SOM_M_ODObject_xh
  226. #define SOM_M_ODObject_xh
  227.  
  228. class M_ODObject;
  229.  
  230. #define M_ODObject_MajorVersion 0
  231. #define M_ODObject_MinorVersion 0
  232.  
  233. /* C++ som defs */
  234. #include <somcls.xh>
  235.  
  236. /* Include C++ parent defs */
  237. #ifndef SOM_SOMClass_xh
  238. #include <somcls.xh>
  239. #endif
  240.  
  241. #ifndef M_ODObject_API
  242. #define M_ODObject_API
  243. /*
  244.  * -- The Class API
  245.  */
  246.  
  247. /*
  248.  * Start of user-defined types:
  249.  */
  250. class ODExtension;
  251.  
  252. /*
  253.  * End of user-defined types.
  254.  */
  255.  
  256. /*
  257.  * -- M_ODObject is a metaclass for ODObject. Make sure ODObject is known.
  258.  */
  259. class ODObject;
  260.  
  261.  
  262. #if applec ^ PRAGMA_LIB_EXPORT
  263. #pragma lib_export on
  264. #endif
  265.  
  266.  
  267. /* A procedure to create the M_ODObject Class */
  268. SOMEXTERN SOMClass * SOMLINK M_ODObjectNewClass(
  269.         integer4 majorVersion,
  270.         integer4 minorVersion);
  271.  
  272. /* The API to the M_ODObject class object, and the methods it introduces. */
  273. typedef struct M_ODObjectClassDataStructure {
  274.     SOMClass *classObject;
  275. } M_ODObjectClassDataStructure;
  276. #ifdef SOM_NO_DATA_EXPORTS
  277.    SOMEXTERN M_ODObjectClassDataStructure * M_ODObjectGetClassData ( void );
  278. #   undef M_ODObjectClassData
  279. #   define M_ODObjectClassData (*M_ODObjectGetClassData())
  280. #else
  281.    SOMEXTERN M_ODObjectClassDataStructure M_ODObjectClassData;
  282. #endif /* SOM_NO_DATA_EXPORTS */
  283.  
  284. #if applec ^ PRAGMA_LIB_EXPORT
  285. #pragma lib_export off
  286. #endif
  287.  
  288. #define _M_ODObject M_ODObjectClassData.classObject
  289.  
  290. /* The API to parentMtabs for M_ODObject, and the instance data it introduces. */
  291. SOMEXTERN struct M_ODObjectCClassDataStructure {
  292.     somMethodTabs parentMtab;
  293.     somDToken instanceDataToken;
  294. } M_ODObjectCClassData;
  295.  
  296. /*
  297.  * -- Typedefs for Procedures that support Methods introduced by M_ODObject
  298.  */
  299. SOMEXTERN {
  300. }
  301.  
  302. #endif /* M_ODObject_API */
  303.  
  304.  
  305. /*
  306.  * -- Method Tokens are Thunks
  307.  */
  308. #undef somresolve_
  309. #define somresolve_(obj,mToken) ((somMethodProc*)((void)obj, mToken))
  310.  
  311. /*
  312.  * -- The C++ Wrapper Class for M_ODObject
  313.  */
  314. class M_ODObject : public SOMClass
  315. {
  316. public:
  317.  
  318. void *operator new(size_t size)
  319. {
  320.    SOM_IgnoreWarning(size);
  321.    if (!M_ODObjectClassData.classObject) 
  322.       M_ODObjectNewClass(M_ODObject_MajorVersion,M_ODObject_MinorVersion);
  323.    return (void *)
  324.       ((somTD_SOMClass_somNew)
  325.       somresolve_((SOMObject *)((void*)(M_ODObjectClassData.classObject)),
  326.                  SOMClassClassData.somNew))
  327.          ((SOMClass *)((void*)(M_ODObjectClassData.classObject)));
  328. }
  329.  
  330. void operator delete(void * obj)
  331. {
  332.    ((SOMObject *)obj)->somFree();
  333. }
  334.  
  335. /* Override somNew for this Metaclass to specialize the return type. */
  336. ODObject* somNew()
  337. {
  338.    return (ODObject *) ((void *)(SOMClass::somNew()));
  339. }
  340.  
  341.  
  342. };   /* M_ODObject */
  343.  
  344.  
  345.  
  346. #endif       /* SOM_M_ODObject_xh */
  347.